Software applications are exposed to various situations and requirements. This requires an application to dynamically change its architectural configuration in response to changes in situations and requirements. This issue can be modeled by the dynamic architectural selection problem in which an application searches its possible architectural instances and selects an optimal one for the current situation and user requirements.
 
In this paper, we illustrated a motivating example that requires dynamic architectural selection and formulated the dynamic architectural selection problem using softgoal interdependency graphs. Then, we proposed a novel approach to the dynamic architectural selection problem on the basis of genetic algorithms. This approach enables an application to dynamically search possible architectural instances (the search space) to find an optimal instance to the current situation and requirements within a short span of time. The evaluation of this approach showed that our approach can accelerate the architectural selection of an application even if the application must search a considerable number of instances.

Possible improvements to our approach are applying various crossover operators and inferring a new combination from already found solutions in other situations and requirements. In our approach, the two-point crossover is adopted. As described, it randomly chooses two points. This operator may not guarantee faster convergence to an optimal chromosome than other crossover operators. Hence, we need to apply other crossover operators and compare them.

In addition to different crossover operators, it is also important to compare our approach to other global search algorithms such as ant colony optimization \cite{Dorigo96theant} and particle swarm optimization \cite{swintel}. Further study on this issue may include the modification of the problem structure because other search algorithms consider additional information such as the graph structure of solutions (ant colony optimization) or the distance between two solutions (particle swarm optimization).

As stated in Section \ref{sec:approach}, this approach runs the algorithm for every change in the situation and requirement. Even though the GA-based algorithm takes a very short time to find an near-optimal solution, executing the algorithm every time may lead to performance degradation. To prevent this problem, we can control the initial population on the basis of the similarity of situations and weights. The similarity can be determined by measuring the distance between situation variables or weights. Previously, chromosomes that were chosen in each situation and requirement change had to be memorized. Then, we can generate the initial population by using chromosomes of near and already known situations or weights. This may accelerate the algorithm.

Another future work is tool implementation. To practically apply our approach, a tool or GUI for the user's quality requirements changes should be implemented. These can be implemented by additional dialogs in the application or administrative menus. These can appear when the user requires them and may interrupt the execution of the application.
